
#include <iostream>
using namespace std;

void print()
{
    cout << "End of recursion\n";
}

template<class T, class... Args>
void print(T first, Args... args)
{
    cout << first << endl;
    print(args...); // 递归展开参数包
}

template<typename... Args>
void print_2(Args... args)
{
    (cout << ... << args) << '\n'; // 使用折叠表达式打印所有参数 C++17
}

int main()
{
    print(1, 2, 3, "adas", 'a', 0.1, -9);
    print_2("haha", 1, 2);
    return 0;
}